// 扫描器类，获取扫描到的 templateStr
export default class Scanner {
    constructor(templateStr) {
        // 将模板字符串写到实例身上
        this.templateStr = templateStr;
        // 初始化指针
        this.pos = 0;
        // 尾巴，一开始就是模板字符串原文
        this.tail = templateStr;
    }

    // 功能弱，就是走过指定内容，没有返回值
    scan(tag) {
        if (this.tail.indexOf(tag) > -1) {
            this.pos += tag.length;
            this.tail = this.templateStr.substring(this.pos);
        }
    }

    // 让指针进行扫描，直到遇见指定内容结束，并且能够返回结束之前路过的文字
    scanUtil(stopTag) {
        const pos_temp = this.pos
        while (!this.eos() && this.tail.indexOf(stopTag) != 0){
            this.pos ++
            this.tail = this.templateStr.substring(this.pos)
        }
        return this.templateStr.substring(pos_temp, this.pos)
    }

    // 指针是否已经到头，返回布尔值。end of string
    eos() {
        return this.pos >= this.templateStr.length;
    }
}
